home *** CD-ROM | disk | FTP | other *** search
- RESOURCES "MenuMadness.rsc","APPLMMDs"
- COMPILE 0,_macsBugLabels ' copyright 1994 Robert Schenk
-
- _ApfelMenu=127
- _fileMenu=1
- _Basics=2
- _Dim=1
- _CheckNext=2
- _Dummy=4
- _Uncheck=3
- _DimThird=5
- _Flash=7
- DIM ghelpmenuitem, gmenu%
- END GLOBALS
- '*******************************************
- 'FN to put help menu where it belongs
- '*******************************************
- LOCAL FN InstallHelp(Title$)
- LONG IF SYSTEM(_sysVers)>690
- err=FN HMGETHELPMENUHANDLE(HHndl&)
- LONG IF err=0 AND HHndl&<>0
- CALL APPENDMENU(HHndl&, Title$)
- ghelpmenuitem=FN COUNTMITEMS(HHndl&)
- EXIT FN ' needs FB version 1.02
- END IF
- END IF
- Hndl&=FN GETMHANDLE(127)
- CALL INSMENUITEM(Hndl&,"Help...",1)
- END FN
- '****************************************
- 'fn checks one and only one item in a menu
- '****************************************
- LOCAL FN SetOneCheck(menuid%, menuitem%)
- Hndl&= FN GETMHANDLE(menuid%)
- LONG IF Hndl&<>0
- i=FN COUNTMITEMS(Hndl&)
- LONG IF i>0
- FOR j=1 TO i
- CALL CHECKITEM(Hndl&, j, menuitem%=j)
- NEXT j
- END IF
- END IF
- END FN
- '*****************************************
- 'fn illustrates how one can switch menubars
- '*****************************************
- LOCAL FN SwitchMenuBar(id%)
- Hndl&=FN GETMENUBAR
- LONG IF Hndl&<>0
- CALL CLEARMENUBAR
- CALL RELEASERESOURCE(Hndl&)
- END IF
- Hndl&=FN GETNEWMBAR(id%)
- LONG IF Hndl&<>0
- CALL SETMENUBAR(Hndl&)
- CALL DRAWMENUBAR
- END IF
- FN InstallHelp("Menu Madness Help...)
- gmenu=id%
- END FN
- '*******************************************
- ' function to install a submenu
- '*******************************************
- LOCAL FN installSubMenu(id%)
- Hndl&=FN GETMENU(id%)
- CALL INSERTMENU(Hndl&, -1)
- END FN
- '*******************************************
- 'FN illustrates Toolbox routines
- '*******************************************
- LOCAL FN ShowSetItemRoutines
- ' first we mark up things in the third menu
- Hndl&=FN GETMHANDLE(3)
- CALL SETITEMICON(Hndl&,1, 5) ' reverse is CALL GETITEMICON(HNDL&,item%, code)
- CALL SETITEMCMD(Hndl&,2,29) ' Reverse is CALL GETITEMCMD(Hndl&, item%, code)
- CALL SETITEMICON(Hndl&,2, 5) ' consider also CALL GETITEMMARK(Hndl&, item%, code)
- CALL SETITEMMARK(Hndl&,3,_CheckMark) ' _CHECKMARK=18
- CALL SETITEMMARK(Hndl&,4,_DIAMONDMARK) ' _DIAMONDMARK=19
- CALL SETITEMSTYLE(Hndl&, 6,2) ' reverse is CALL GETITEMSTYLE(Hndl&, item%, code)
- CALL SETITEMSTYLE(Hndl&, 7,1)
- CALL SETITEMSTYLE(Hndl&, 8,8)
- CALL SETITEMSTYLE(Hndl&, 9,4)
- END FN
- '*******************************************
- 'fn illustrates how to build a menu of resoources
- '*******************************************
- LOCAL FN BuildNoiseMenu
- Hndl&=FN NEWMENU(4, "Noise")
- LONG IF Hndl&<>0
- CALL INSERTMENU(Hndl&,0)
- CALL DRAWMENUBAR
- CALL INSERTRESMENU(Hndl&, _"snd ",0)
- 'CALL ADDRESMENU(Hndl&, _"snd ")' another way to do this
- CALL GETITEM(Hndl&,1,a$)
- i=FN COUNTMITEMS(Hndl&)
- PRINT a$, i
- WHILE a$<"A" AND i>0
- CALL DELMENUITEM(Hndl&,1)
- CALL GETITEM(Hndl&,1,a$)
- i=FN COUNTMITEMS(Hndl&)
- WEND
- END IF
- END FN
- '********************************************
- 'fn illustrates how to flash menus and menubar
- '********************************************
- LOCAL FN flashit
- DELAY 200
- FOR j=1 TO 4
- FOR i= 1 TO 4
- CALL FLASHMENUBAR(i)
- 'CALL HILITEMENU(i) another way to get same result
- DELAY 100
- NEXT i
- NEXT j
- CALL HILITEMENU(0)
- FOR j=1 TO 10
- CALL FLASHMENUBAR(0)
- DELAY 200
- NEXT j
- END FN
- '**********************************************
- LOCAL FN intialize
- FN SwitchMenuBar(128)
- FN ShowSetItemRoutines
- FN installSubMenu(40)
- FN BuildNoiseMenu
- END FN
- '**********************************************
- LOCAL FN doquit
- END
- END FN
- '**********************************************
- LOCAL FN domenu
- DIM menuid, menuitem
- menuid=MENU(0)
- menuitem=MENU(1)
- SELECT CASE menuid
- CASE _ApfelMenu
- SELECT CASE menuitem
- CASE 1
- PRINT "Apple Menu pulled down."
- CASE 2
- PRINT "Help under Apple Menu"
- END SELECT
- CASE _fileMenu
- FN doquit
- CASE _Basics
- SELECT CASE menuitem
- CASE _Dim
- Hndl&=FN GETMHANDLE(_Basics)
- CALL GETITEM(Hndl&, _Dim, A$)
- LONG IF A$="Enable Dummy"
- CALL SETITEM(Hndl&,_Dim,"Disable Dummy")
- CALL ENABLEITEM(Hndl&,_Dummy)
- XELSE
- CALL SETITEM(Hndl&,_Dim,"Enable Dummy")
- CALL DISABLEITEM(Hndl&,_Dummy)
- END IF
- CASE _CheckNext
- Hndl&=FN GETMHANDLE(_Basics)
- CALL CHECKITEM(Hndl&,_Dim,_true)
- CASE _Dummy
- BEEP
- CASE _Uncheck
- Hndl&=FN GETMHANDLE(_Basics)
- CALL CHECKITEM(Hndl&,_Dim,_false)
- CASE _DimThird
- Hndl&=FN GETMHANDLE(_Basics)
- CALL GETITEM(Hndl&, _DimThird, A$)
- LONG IF A$="Enable Third Menu"
- CALL SETITEM(Hndl&,_DimThird,"Disable Third Menu")
- Hndl&=FN GETMHANDLE(3)
- CALL ENABLEITEM(Hndl&,0)
- XELSE
- CALL SETITEM(Hndl&,_DimThird,"Enable Third Menu")
- Hndl&=FN GETMHANDLE(3)
- CALL DISABLEITEM(Hndl&,0)
- END IF
- CALL DRAWMENUBAR
- CASE _Flash
- FN flashit
- CASE ELSE
- END SELECT
- CASE 3 ' This menu does nothing at all
- CASE 4
- Hndl&=FN GETMHANDLE(4)
- CALL GETITEM(Hndl&, menuitem, a$)
- FN SetOneCheck(menuid, menuitem)
- SOUND a$
- PRINT menuitem, a$
- CASE 40
- PRINT menuid, menuitem
- LONG IF menuitem=4
- LONG IF gmenu=128
- FN SwitchMenuBar(129)
- XELSE
- FN SwitchMenuBar(128)
- FN installSubMenu(40)
- END IF
- END IF
- CASE 99
- CASE _kHMHelpMenuID
- SELECT CASE menuitem
- CASE ghelpmenuitem
- PRINT "No help available."
- END SELECT
- CASE ELSE
- END SELECT
- CALL HILITEMENU(0)
- END FN
- '**********************************************
- 'main program
- '**********************************************
- FN intialize
- ON MENU FN domenu
- ON BREAK FN doquit
- DO
- HANDLEEVENTS
- UNTIL programends
-
-
-